package com.major.recursion.migong;

public class SetWay {

    /**
     * 找路，0：没有走过，1：墙，2：走过，3：死路。按照下，右，上，左的策略走
     * @param map 地图
     * @param i 从哪个位置开始走
     * @param j
     */
    static boolean setWay(int[][] map,int i,int j){

        if ( map[6][5] == 2){
            return true;
        }else {
            if (map[i][j] == 0){    // 还没走过这个点
                map[i][j] = 2;      // 假设有路
                if (setWay(map, i+1, j)){   // 下
                    return true;
                }
                if (setWay(map, i, j+1)){   // 右
                    return true;
                }
                if (setWay(map, i-1, j)){   // 上
                    return true;
                }
                if ( setWay(map,i,j-1)){    // 左
                    return true;
                }else {                       // 死路
                    map[i][j] = 3;
                    return false;
                }
            } else {            // 1,3表示死路，2表示走过的，也是false
                                // 如果四个方向都是false，则回溯，向
                return false;
            }
        }
    }
}
